<!DOCTYPE html>
<html lang="en-US">
    <head>
        <title>Text::Unidecode - plain ASCII transliterations of Unicode text - metacpan.org</title>
        <link rel="preload" as="fetch" href="https://metacpan.org/account/login_status" crossorigin="anonymous" />
        <link href="https://metacpan.org/_assets/b8ccceeed47a0652049703d99326a9cea4933443.css" rel="stylesheet" type="text/css">
        <script src="https://metacpan.org/_assets/6bfedafe2d7caa915b7d84f61b45936818e3242e.js" type="text/javascript" defer></script>
        <link rel="alternate" type="application/rss+xml" title="Recent CPAN Uploads of Text-Unidecode - MetaCPAN" href="https://metacpan.org/dist/Text-Unidecode/releases.rss" />
        <link rel="canonical" href="./Text::Unidecode.html" />
        <meta name="description" content="plain ASCII transliterations of Unicode text" />
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
        <link rel="shortcut icon" href="https://metacpan.org/static/icons/favicon.ico">
        <link rel="apple-touch-icon" sizes="152x152" href="https://metacpan.org/static/icons/apple-touch-icon.png">
        <link rel="search" href="https://metacpan.org/static/opensearch.xml" type="application/opensearchdescription+xml" title="MetaCPAN">
        <script>
          (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
          (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
          m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

          (function(skey, ga_id){
            ga('create', ga_id, {
              siteSpeedSampleRate : 100,
              storage             : 'none',
              clientId            : localStorage.getItem(skey)
            });
            ga(function(tracker) {
              localStorage.setItem(skey, tracker.get('clientId'));
            });
            ga('send', 'pageview');
          })('ga:clientId', 'UA-27829474-1');
        </script>
<meta name="twitter:card"        content="summary" />
<meta name="twitter:url"         content="https://metacpan.org/pod/Text::Unidecode" />
<meta name="twitter:title"       content="Text::Unidecode" />
<meta name="twitter:description" content="plain ASCII transliterations of Unicode text" />
<meta name="twitter:site"        content="metacpan" />
    </head>
    <body>
        <nav class="navbar navbar-default" role="navigation">
            <div class="header-logo-large hidden-xs">
              <a href="https://metacpan.org/" tabindex="0">
                <svg class="logo" aria-label="MetaCPAN">
                  <use class="logo" href="/static/images/metacpan-logo.svg#logo" />
                </svg>
              </a>
            </div>
            <div class="header-logo-icon visible-xs">
              <a href="https://metacpan.org/">
                <svg class="logo" aria-label="MetaCPAN">
                  <use class="logo" href="/static/images/metacpan-logo.svg#dots" />
                </svg>
              </a>
            </div>
            <ul class="nav navbar-nav menu-items hidden-xs hidden-sm">
              <li><a href="https://metacpan.org/about">About</a></li>
              <li><a href="https://metacpan.org/about/sponsors">Sponsor</a></li>
              <li><a href="https://grep.metacpan.org/">grep::cpan</a></li>
              <li><a href="https://metacpan.org/recent">Recent</a></li>
              <li><a href="https://metacpan.org/about/faq">FAQ</a></li>
              <li><a href="https://metacpan.org/tools">Tools</a></li>
              <li><a href="https://fastapi.metacpan.org/">API</a></li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
                <button type="button" class="searchbar-btn visible-xs visible-sm">
                    <i class="fa fa-search button-fa-icon"></i>
                </button>
                <form action="https://metacpan.org/search" class="searchbar-form visible-md visible-lg search-form form-horizontal">
                   <input type="hidden" name="size" id="metacpan_search-size" value="20">
                  <div class="form-group">
                      <div class="search-group">
                        <i class="fa fa-search"></i>
                        <input type="text" name="q" placeholder="Search the CPAN" size="41" autocorrect="off" autocapitalize="off" spellcheck="false" id="metacpan_search-input" class="form-control" value="">
                      </div>
                  </div>
                </form>
                    <li class="icon-slidepanel visible-xs visible-sm">
                      <button data-toggle="slidepanel" data-target=".slidepanel">
                        <span class="button-fa-icon">
                          <i class="fa fa-bars slidepanel-open"></i>
                          <i class="fa fa-times slidepanel-close"></i>
                        </span>
                      </button>
                    </li>
                <form action="https://metacpan.org/account/logout" method="POST" id="metacpan-logout"></form>
                <li class="dropdown logged_in" style="display: none;">
                    <button type="button" class="dropdown-toggle" data-toggle="dropdown">
                      <i class="fa fa-user button-fa-icon logged-in-icon" aria-hidden="true"></i>
                      <i class="fas fa-chevron-down"></i>
                    </button>
                    <ul class="dropdown-menu">
                        <li><a href="https://metacpan.org/account/identities">Identities</a></li>
                        <li><a href="https://metacpan.org/account/profile">Profile</a></li>
                        <li><a href="https://metacpan.org/account/favorite/list">Favorites</a></li>
                        <li>
                            <a href="./Text::Unidecode.html#" type="button" onclick="$('#metacpan-logout').submit(); return false">
                              Logout
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown logged_out" style="display: none;">
                    <button type="button" class="dropdown-toggle" data-toggle="dropdown">
                      <i class="fa fa-user button-fa-icon" aria-hidden="true"></i>
                      <i class="fas fa-chevron-down"></i>
                    </button>
                    <ul class="dropdown-menu">
                        <li>
                            <a href="https://metacpan.org/login/github">
                                <i class="fab fa-github fa-fw"></i>
                                GitHub
                            </a>
                        </li>
                        <li>
                            <a href="https://metacpan.org/login/twitter">
                                <i class="fab fa-twitter fa-fw"></i>
                                Twitter
                            </a>
                        </li>
                        <li>
                            <a href="https://metacpan.org/login/google">
                                <i class="fab fa-google fa-fw"></i>
                                Google
                            </a>
                        </li>
                    </ul>
                </li>
                <li class="dropdown logged_placeholder">
                    <button>
                      <i class="fa fa-user button-fa-icon" aria-hidden="true"></i>
                    </button>
                </li>
            </ul>
        </nav>
        <div class="page-content ">
          <!--
          <div class="top-notify-banner">
            <i class="fas fa-info-circle"></i>
          </div>
          -->
          <nav class="sidebar">
            <div class="slidepanel">
              <ul class="nav-list ">
    <li class="nav-header no-margin-top">
      <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The date that this version of Text-Unidecode was released.">
      <span class="relatize">26 Nov 2016 12:14:32 UTC</span>
    </li>
  <li>
    Distribution: <a href="https://metacpan.org/dist/Text-Unidecode">Text-Unidecode</a>
  </li>
  <li>
    Module version: 1.30
  </li>
  <li>
    <a data-keyboard-shortcut="g s" href="https://metacpan.org/dist/Text-Unidecode/source/lib/Text/Unidecode.pm">Source</a>
    (<a href="https://metacpan.org/dist/Text-Unidecode/source/lib/Text/Unidecode.pm?raw=1">raw</a>)
  </li>
  <li>
    <a data-keyboard-shortcut="g b" href="https://metacpan.org/dist/Text-Unidecode/source/lib/Text">Browse</a>
    (<a href="https://metacpan.org/dist/Text-Unidecode/source/lib/Text?raw=1">raw</a>)
  </li>
    <li>
      <a data-keyboard-shortcut="g c" href="https://metacpan.org/dist/Text-Unidecode/changes">Changes</a>
    </li>
    <li>
      <a class="nopopup" href="https://metacpan.org/dist/Text-Unidecode/contribute">How to Contribute</a>
    </li>
    <li>
      <a rel="noopener nofollow" data-keyboard-shortcut="g i" href="https://rt.cpan.org/Public/Dist/Display.html?Name=Text-Unidecode">Issues</a>
      (9)
    </li>
    <li>
      <a rel="noopener nofollow" href="http://matrix.cpantesters.org/?dist=Text-Unidecode+1.30" title="Matrix">Testers</a>
        <span title="(pass / fail / na)">(<a rel="noopener nofollow" href="https://www.cpantesters.org/distro/T/Text-Unidecode.html?oncpan=1&amp;distmat=1&amp;version=1.30&amp;grade=2" style="color: #090">1270</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/T/Text-Unidecode.html?oncpan=1&amp;distmat=1&amp;version=1.30&amp;grade=3" style="color: #900">0</a> / <a rel="noopener nofollow" href="https://www.cpantesters.org/distro/T/Text-Unidecode.html?oncpan=1&amp;distmat=1&amp;version=1.30&amp;grade=4">0</a>)</span>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://cpants.cpanauthors.org/release/SBURKE/Text-Unidecode-1.30">Kwalitee</a>
    </li>
    <li>
      <div class="ttip" data-toggle="tooltip" data-placement="bottom" title="The # people with an indexing permission on Text-Unidecode who have released something to CPAN in the last 2 years (i.e. the # people likely able to release critical fixes in a timely manner)">
      Bus factor: 0
      </div>
    </li>
    <li>
      <a rel="noopener nofollow" href="http://cpancover.com/latest/Text-Unidecode-1.30/index.html">61.79% Coverage </a>
    </li>
    <li>
      License: perl_5
    </li>
    <li>
      Perl: v5.8.0
    </li>
    <li class="nav-header">Activity</li>
    <li>
<div class="activity-graph">
    <img src="https://metacpan.org/dist/Text-Unidecode/activity.svg?res=month" />
    <div class="comment">24 month</div>
</div>
    </li>
    <li class="nav-header">Tools</li>
    <li>
      <a itemprop="downloadUrl" href="https://cpan.metacpan.org/authors/id/S/SB/SBURKE/Text-Unidecode-1.30.tar.gz">
      Download (<span itemprop="fileSize">134.74KB</span>)</a>
    </li>
    <li>
      <a href="https://explorer.metacpan.org/?url=%2Fmodule%2FSBURKE%2FText-Unidecode-1.30%2Flib%2FText%2FUnidecode.pm">
        MetaCPAN Explorer
      </a>
    </li>
    <li>
      <a href="https://metacpan.org/dist/Text-Unidecode/permissions">
        Permissions
      </a>
    </li>
    <li>
      <a href="https://metacpan.org/dist/Text-Unidecode/releases.rss">
        Subscribe to distribution
      </a>
    </li>
    <li>
      <button class="btn btn-link" data-toggle="modal" data-target="#metacpan_install-instructions-dialog">
        Install Instructions
      </button>
    </li>
    <li>
      <form action="https://metacpan.org/search">
        <input type="hidden" name="q" value="dist:Text-Unidecode">
        <input type="search" name="q" placeholder="Search distribution" class="form-control tool-bar-form">
        <input type="submit" style="display: none">
      </form>
    </li>
    <li>
      <form action="https://grep.metacpan.org/search">
        <input type="hidden" name="qd" value="Text-Unidecode">
        <input type="hidden" name="source" value="metacpan">
        <input type="search" name="q" placeholder="grep distribution" class="form-control tool-bar-form">
        <input type="submit" style="display: none">
     </form>
    </li>
    <li class="version-jump">
<select onchange="document.location.href=&#39;/release/&#39;+this.value+&#39;/view/lib/Text/Unidecode.pm&#39;" class="form-control tool-bar-form">
  <option disabled selected>Jump to version</option>
<option
  disabled
  value="SBURKE/Text-Unidecode-1.30"
>1.30
  (SBURKE on 2016-11-26)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.27"
>1.27
  (SBURKE on 2015-10-21)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.25_01"
>1.25_01 DEV
  (SBURKE on 2015-10-16)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.24"
>1.24
  (SBURKE on 2015-08-28)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.23"
>1.23
  (SBURKE on 2014-12-07)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.22"
>1.22
  (SBURKE on 2014-08-15)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.20_01"
>1.20_01 DEV
  (SBURKE on 2014-07-25)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.01"
>1.01
  (SBURKE on 2014-06-30)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.00_03"
>1.00_03 DEV
  (SBURKE on 2014-06-23)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.00_01"
>1.00_01 DEV
  (SBURKE on 2014-06-14)</option>
<option
  
  value="SBURKE/Text-Unidecode-0.04"
>0.04
  (SBURKE on 2001-07-14)</option>
<optgroup label="BackPAN">'
<option
  
  value="SBURKE/Text-Unidecode-1.26"
>1.26
  (SBURKE on 2015-10-21)</option>
<option
  
  value="SBURKE/Text-Unidecode-0.03"
>0.03
  (SBURKE on 2001-07-14)</option>
</optgroup>
</select>
    </li>
    <li class="version-diff">
<select onchange="document.location.href='/release/SBURKE/Text-Unidecode-1.30/diff/' + encodeURIComponent(this.value) + '/lib/Text/Unidecode.pm'
" class="form-control tool-bar-form">
  <option disabled selected>Diff with version</option>
<option
  disabled
  value="SBURKE/Text-Unidecode-1.30"
>1.30
  (SBURKE on 2016-11-26)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.27"
>1.27
  (SBURKE on 2015-10-21)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.25_01"
>1.25_01 DEV
  (SBURKE on 2015-10-16)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.24"
>1.24
  (SBURKE on 2015-08-28)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.23"
>1.23
  (SBURKE on 2014-12-07)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.22"
>1.22
  (SBURKE on 2014-08-15)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.20_01"
>1.20_01 DEV
  (SBURKE on 2014-07-25)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.01"
>1.01
  (SBURKE on 2014-06-30)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.00_03"
>1.00_03 DEV
  (SBURKE on 2014-06-23)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.00_01"
>1.00_01 DEV
  (SBURKE on 2014-06-14)</option>
<option
  
  value="SBURKE/Text-Unidecode-0.04"
>0.04
  (SBURKE on 2001-07-14)</option>
<optgroup label="BackPAN">'
<option
  
  value="SBURKE/Text-Unidecode-1.26"
>1.26
  (SBURKE on 2015-10-21)</option>
<option
  
  value="SBURKE/Text-Unidecode-0.03"
>0.03
  (SBURKE on 2001-07-14)</option>
</optgroup>
</select>
    </li>

    <li>
<ul class="dependencies">
  <li class="nav-header">Dependencies</li>
  <li><i class="ttip" title="dynamic_config enabled">unknown</i></li>
  <li>
    <hr>
  </li>
  <li>
    <a href="https://metacpan.org/module/Text::Unidecode/requires">Reverse dependencies</a>
  </li>
  <li>
    <a href="http://deps.cpantesters.org/?module=Text%3A%3AUnidecode">CPAN Testers List</a>
  </li>
  <li>
    <a href="https://cpandeps.grinnz.com/?dist=Text-Unidecode">Dependency graph</a>
  </li>
</ul>
    </li>
    <li class="nav-header">Permalinks</li>
    <li>
      <a href="https://metacpan.org/release/SBURKE/Text-Unidecode-1.30/view/lib/Text/Unidecode.pm">This version</a>
    </li>
    <li>
      <a href="./Text::Unidecode.html">Latest version</a>
    </li>
    <li>
<div class="plussers">
<div class="nav-header">++ed by:</div>
<div>
<a class="display-all" href="https://metacpan.org/author/KUERBIS"><img src="https://www.gravatar.com/avatar/136c77354b6a6d4451c38198dd74d83c?d=identicon&amp;s=20" title="KUERBIS" alt="KUERBIS"></a>
<a class="display-all" href="https://metacpan.org/author/NICOMEN"><img src="https://www.gravatar.com/avatar/8e921aeadb00378ab16b466c53dea48a?d=identicon&amp;s=20" title="NICOMEN" alt="NICOMEN"></a>
<a class="display-all" href="https://metacpan.org/author/DEXTER"><img src="https://www.gravatar.com/avatar/c25e440701c836655e68df74d87e7052?d=identicon&amp;s=20" title="DEXTER" alt="DEXTER"></a>
<a class="display-all" href="https://metacpan.org/author/PINGAN"><img src="https://www.gravatar.com/avatar/a02222e5e0e4fd24d52fc29a08ac6bcb?d=identicon&amp;s=20" title="PINGAN" alt="PINGAN"></a>
<a class="display-all" href="https://metacpan.org/author/ASHLEY"><img src="https://www.gravatar.com/avatar/06803cd7d800745eb429165492d43e66?d=identicon&amp;s=20" title="ASHLEY" alt="ASHLEY"></a>
</div>
<!-- Display counts of plussers-->
<div>
    <a href="https://metacpan.org/dist/Text-Unidecode/plussers">24 PAUSE users</a>
</div>
<div>
    11 non-PAUSE users
</div>
</div>
    </li>
    <li>
    </li>
              </ul>
            </div>
          </nav>
          <div class="content-navigation">
<div class="breadcrumbs">
  <span>
    <a data-keyboard-shortcut="g a" rel="author" href="https://metacpan.org/author/SBURKE" class="author-name">Sean M. Burke</a>
  </span>
  <span>&nbsp;/&nbsp;</span>
  <div class="release dist-release status-latest maturity-released">
    <span class="dropdown"><b class="caret"></b></span>
<select onchange="document.location.href=&#39;/release/&#39;+this.value+&#39;/view/lib/Text/Unidecode.pm&#39;" class="">
<option
  selected
  value="SBURKE/Text-Unidecode-1.30"
>1.30
  (SBURKE on 2016-11-26)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.27"
>1.27
  (SBURKE on 2015-10-21)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.25_01"
>1.25_01 DEV
  (SBURKE on 2015-10-16)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.24"
>1.24
  (SBURKE on 2015-08-28)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.23"
>1.23
  (SBURKE on 2014-12-07)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.22"
>1.22
  (SBURKE on 2014-08-15)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.20_01"
>1.20_01 DEV
  (SBURKE on 2014-07-25)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.01"
>1.01
  (SBURKE on 2014-06-30)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.00_03"
>1.00_03 DEV
  (SBURKE on 2014-06-23)</option>
<option
  
  value="SBURKE/Text-Unidecode-1.00_01"
>1.00_01 DEV
  (SBURKE on 2014-06-14)</option>
<option
  
  value="SBURKE/Text-Unidecode-0.04"
>0.04
  (SBURKE on 2001-07-14)</option>
<optgroup label="BackPAN">'
<option
  
  value="SBURKE/Text-Unidecode-1.26"
>1.26
  (SBURKE on 2015-10-21)</option>
<option
  
  value="SBURKE/Text-Unidecode-0.03"
>0.03
  (SBURKE on 2001-07-14)</option>
</optgroup>
</select>
    <a data-keyboard-shortcut="g d" class="release-name" href="https://metacpan.org/dist/Text-Unidecode">Text-Unidecode-1.30</a>
  </div>
<span class="river-gauge-gauge">
  <svg width="24px"
       height="15px"
       version="1.1"
       xmlns="http://www.w3.org/2000/svg"
       xmlns:xlink="http://www.w3.org/1999/xlink">

    <g>
      <title>        River stage three &#10;
          • 44 direct dependents &#10;          • 329 total dependents
      </title>

      <rect x="0"  y="0" width="4" height="15" fill="#7ea3f2" />
      <rect x="5"  y="0" width="4" height="15" fill="#7ea3f2" />
      <rect x="10"  y="0" width="4" height="15" fill="#7ea3f2" />
      <rect x="15"  y="0" width="4" height="15" fill="#e4e2e2" />
      <rect x="20"  y="0" width="4" height="15" fill="#e4e2e2" />
    </g>
  </svg>

</span>
<div id="Text-Unidecode-fav" class="logged_in">
<form action="https://metacpan.org/account/favorite/add" style="display: inline" onsubmit="return favDistribution(this)">
    <input type="hidden" name="remove" value="0">
    <input type="hidden" name="release" value="Text-Unidecode-1.30">
    <input type="hidden" name="author" value="SBURKE">
    <input type="hidden" name="distribution" value="Text-Unidecode">
    <button type="submit" class="favorite highlight"><span>35</span> ++</button>
</form>
</div>
<div class="logged_out">
<a href="./Text::Unidecode.html" onclick="alert('Please sign in to add favorites'); return false" class="favorite highlight">
<span>35</span> ++</a>
</div>
   / <span>Text::Unidecode</span>
</div>
          </div>
          <main class="content">


<nav class="toc">
  <div class="toc-header"><strong>Contents</strong></div>
<ul>
  <li><a href="./Text::Unidecode.html#NAME">NAME</a></li>
  <li><a href="./Text::Unidecode.html#SYNOPSIS">SYNOPSIS</a></li>
  <li><a href="./Text::Unidecode.html#DESCRIPTION">DESCRIPTION</a></li>
  <li><a href="./Text::Unidecode.html#DESIGN-PHILOSOPHY">DESIGN PHILOSOPHY</a></li>
  <li><a href="./Text::Unidecode.html#FUNCTIONS">FUNCTIONS</a></li>
  <li><a href="./Text::Unidecode.html#DESIGN-GOALS-AND-CONSTRAINTS">DESIGN GOALS AND CONSTRAINTS</a></li>
  <li><a href="./Text::Unidecode.html#A-POD-ENCODING-TEST">A POD ENCODING TEST</a></li>
  <li><a href="./Text::Unidecode.html#TODO">TODO</a></li>
  <li><a href="./Text::Unidecode.html#MOTTO">MOTTO</a></li>
  <li><a href="./Text::Unidecode.html#WHEN-YOU-DON&#39;T-LIKE-WHAT-UNIDECODE-DOES">WHEN YOU DON&#39;T LIKE WHAT UNIDECODE DOES</a></li>
  <li><a href="./Text::Unidecode.html#CAVEATS">CAVEATS</a></li>
  <li><a href="./Text::Unidecode.html#THANKS">THANKS</a></li>
  <li><a href="./Text::Unidecode.html#PORTS">PORTS</a></li>
  <li><a href="./Text::Unidecode.html#SEE-ALSO">SEE ALSO</a></li>
  <li><a href="./Text::Unidecode.html#LICENSE">LICENSE</a></li>
  <li><a href="./Text::Unidecode.html#DISCLAIMER">DISCLAIMER</a></li>
  <li><a href="./Text::Unidecode.html#AUTHOR">AUTHOR</a></li>
  <li><a href="./Text::Unidecode.html#O-HAI!">O HAI!</a></li>
</ul></nav>
<div class="pod anchors">
<h1 id="NAME">NAME</h1>

<p>Text::Unidecode -- plain ASCII transliterations of Unicode text</p>

<h1 id="SYNOPSIS">SYNOPSIS</h1>

<pre><code>  use utf8;
  use Text::Unidecode;
  print unidecode(
    &quot;&#x5317;&#x4EB0;\n&quot;
    # Chinese characters for Beijing (U+5317 U+4EB0)
  );
  
  # That prints: Bei Jing </code></pre>

<h1 id="DESCRIPTION">DESCRIPTION</h1>

<p>It often happens that you have non-Roman text data in Unicode, but you can&#39;t display it-- usually because you&#39;re trying to show it to a user via an application that doesn&#39;t support Unicode, or because the fonts you need aren&#39;t accessible. You could represent the Unicode characters as &quot;???????&quot; or &quot;\15BA\15A0\1610...&quot;, but that&#39;s nearly useless to the user who actually wants to read what the text says.</p>

<p>What Text::Unidecode provides is a function, <code>unidecode(...)</code> that takes Unicode data and tries to represent it in US-ASCII characters (i.e., the universally displayable characters between 0x00 and 0x7F). The representation is almost always an attempt at <i>transliteration</i>-- i.e., conveying, in Roman letters, the pronunciation expressed by the text in some other writing system. (See the example in the synopsis.)</p>

<p>NOTE:</p>

<p>To make sure your perldoc/Pod viewing setup for viewing this page is working: The six-letter word &quot;r&eacute;sum&eacute;&quot; should look like &quot;resume&quot; with an &quot;/&quot; accent on each &quot;e&quot;.</p>

<p>For further tests, and help if that doesn&#39;t work, see below, <a href="./Text::Unidecode.html#A-POD-ENCODING-TEST">&quot;A POD ENCODING TEST&quot;</a>.</p>

<h1 id="DESIGN-PHILOSOPHY"><a id="DESIGN"></a>DESIGN PHILOSOPHY</h1>

<p>Unidecode&#39;s ability to transliterate from a given language is limited by two factors:</p>

<ul>

<li><p>The amount and quality of data in the written form of the original language</p>

<p>So if you have Hebrew data that has no vowel points in it, then Unidecode cannot guess what vowels should appear in a pronunciation. S f y hv n vwls n th npt, y wn&#39;t gt ny vwls n th tpt. (This is a specific application of the general principle of &quot;Garbage In, Garbage Out&quot;.)</p>

</li>
<li><p>Basic limitations in the Unidecode design</p>

<p>Writing a real and clever transliteration algorithm for any single language usually requires a lot of time, and at least a passable knowledge of the language involved. But Unicode text can convey more languages than I could possibly learn (much less create a transliterator for) in the entire rest of my lifetime. So I put a cap on how intelligent Unidecode could be, by insisting that it support only context-<i>in</i>sensitive transliteration. That means missing the finer details of any given writing system, while still hopefully being useful.</p>

</li>
</ul>

<p>Unidecode, in other words, is quick and dirty. Sometimes the output is not so dirty at all: Russian and Greek seem to work passably; and while Thaana (Divehi, AKA Maldivian) is a definitely non-Western writing system, setting up a mapping from it to Roman letters seems to work pretty well. But sometimes the output is <i>very dirty:</i> Unidecode does quite badly on Japanese and Thai.</p>

<p>If you want a smarter transliteration for a particular language than Unidecode provides, then you should look for (or write) a transliteration algorithm specific to that language, and apply it instead of (or at least before) applying Unidecode.</p>

<p>In other words, Unidecode&#39;s approach is broad (knowing about dozens of writing systems), but shallow (not being meticulous about any of them).</p>

<h1 id="FUNCTIONS">FUNCTIONS</h1>

<p>Text::Unidecode provides one function, <code>unidecode(...)</code>, which is exported by default. It can be used in a variety of calling contexts:</p>

<dl>

<dt id="$out-=-unidecode(-$in-);-#-scalar-context"><a id="out---unidecode---in-----scalar-context"></a><code>$out = unidecode( $in );</code> # scalar context</dt>
<dd>

<p>This returns a copy of $in, transliterated.</p>

</dd>
<dt id="$out-=-unidecode(-@in-);-#-scalar-context"><a id="out---unidecode---in-----scalar-context1"></a><code>$out = unidecode( @in );</code> # scalar context</dt>
<dd>

<p>This is the same as <code>$out = unidecode(join &quot;&quot;, @in);</code></p>

</dd>
<dt id="@out-=-unidecode(-@in-);-#-list-context"><a id="out---unidecode---in-----list-context"></a><code>@out = unidecode( @in );</code> # list context</dt>
<dd>

<p>This returns a list consisting of copies of @in, each transliterated. This is the same as <code>@out = map scalar(unidecode($_)), @in;</code></p>

</dd>
<dt id="unidecode(-@items-);-#-void-context"><a id="unidecode"></a><a id="unidecode---items-----void-context"></a><code>unidecode( @items );</code> # void context</dt>
<dd>

</dd>
<dt id="unidecode(-@bar,-$foo,-@baz-);-#-void-context"><a id="unidecode1"></a><a id="unidecode---bar---foo---baz-----void-context"></a><code>unidecode( @bar, $foo, @baz );</code> # void context</dt>
<dd>

<p>Each item on input is replaced with its transliteration. This is the same as <code>for(@bar, $foo, @baz) { $_ = unidecode($_) }</code></p>

</dd>
</dl>

<p>You should make a minimum of assumptions about the output of <code>unidecode(...)</code>. For example, if you assume an all-alphabetic (Unicode) string passed to <code>unidecode(...)</code> will return an all-alphabetic string, you&#39;re wrong-- some alphabetic Unicode characters are transliterated as strings containing punctuation (e.g., the Armenian letter &quot;&#x539;&quot; (U+0539), currently transliterates as &quot;T`&quot; (capital-T then a backtick).</p>

<p>However, these are the assumptions you <i>can</i> make:</p>

<ul>

<li><p>Each character 0x0000 - 0x007F transliterates as itself. That is, <code>unidecode(...)</code> is 7-bit pure.</p>

</li>
<li><p>The output of <code>unidecode(...)</code> always consists entirely of US-ASCII characters-- i.e., characters 0x0000 - 0x007F.</p>

</li>
<li><p>All Unicode characters translate to a sequence of (any number of) characters that are newline (&quot;\n&quot;) or in the range 0x0020-0x007E. That is, no Unicode character translates to &quot;\x01&quot;, for example. (Although if you have a &quot;\x01&quot; on input, you&#39;ll get a &quot;\x01&quot; in output.)</p>

</li>
<li><p>Yes, some transliterations produce a &quot;\n&quot; but it&#39;s just a few, and only with good reason. Note that the value of newline (&quot;\n&quot;) varies from platform to platform-- see <a href="https://metacpan.org/pod/perlport">perlport</a>.</p>

</li>
<li><p>Some Unicode characters may transliterate to nothing (i.e., empty string).</p>

</li>
<li><p>Very many Unicode characters transliterate to multi-character sequences. E.g., Unihan character U+5317, &quot;&#x5317;&quot;, transliterates as the four-character string &quot;Bei &quot;.</p>

</li>
<li><p>Within these constraints, <i>I may change</i> the transliteration of characters in future versions. For example, if someone convinces me that that the Armenian letter &quot;&#x539;&quot;, currently transliterated as &quot;T`&quot;, would be better transliterated as &quot;D&quot;, I <i>may</i> well make that change.</p>

</li>
<li><p>Unfortunately, there are many characters that Unidecode doesn&#39;t know a transliteration for. This is generally because the character has been added since I last revised the Unidecode data tables. I&#39;m <i>always</i> catching up!</p>

</li>
</ul>

<h1 id="DESIGN-GOALS-AND-CONSTRAINTS"><a id="DESIGN1"></a>DESIGN GOALS AND CONSTRAINTS</h1>

<p>Text::Unidecode is meant to be a transliterator of last resort, to be used once you&#39;ve decided that you can&#39;t just display the Unicode data as is, <i>and once you&#39;ve decided you don&#39;t have a more clever, language-specific transliterator available,</i> or once you&#39;ve <i>already applied</i> smarter algorithms or mappings that you prefer and you now just want Unidecode to do cleanup.</p>

<p>Unidecode transliterates context-insensitively-- that is, a given character is replaced with the same US-ASCII (7-bit ASCII) character or characters, no matter what the surrounding characters are.</p>

<p>The main reason I&#39;m making Text::Unidecode work with only context-insensitive substitution is that it&#39;s fast, dumb, and straightforward enough to be feasible. It doesn&#39;t tax my (quite limited) knowledge of world languages. It doesn&#39;t require me writing a hundred lines of code to get the Thai syllabification right (and never knowing whether I&#39;ve gotten it wrong, because I don&#39;t know Thai), or spending a year trying to get Text::Unidecode to use the ChaSen algorithm for Japanese, or trying to write heuristics for telling the difference between Japanese, Chinese, or Korean, so it knows how to transliterate any given Uni-Han glyph. And moreover, context-insensitive substitution is still mostly useful, but still clearly couldn&#39;t be mistaken for authoritative.</p>

<p>Text::Unidecode is an example of the 80/20 rule in action-- you get 80% of the usefulness using just 20% of a &quot;real&quot; solution.</p>

<p>A &quot;real&quot; approach to transliteration for any given language can involve such increasingly tricky contextual factors as these:</p>

<dl>

<dt id="The-previous-/-preceding-character(s)"><a id="The"></a><a id="The-previous---preceding-character-s"></a>The previous / preceding character(s)</dt>
<dd>

<p>What a given symbol &quot;X&quot; means, could depend on whether it&#39;s followed by a consonant, or by vowel, or by some diacritic character.</p>

</dd>
<dt id="Syllables">Syllables</dt>
<dd>

<p>A character &quot;X&quot; at end of a syllable could mean something different from when it&#39;s at the start-- which is especially problematic when the language involved doesn&#39;t explicitly mark where one syllable stops and the next starts.</p>

</dd>
<dt id="Parts-of-speech"><a id="Parts"></a>Parts of speech</dt>
<dd>

<p>What &quot;X&quot; sounds like at the end of a word, depends on whether that word is a noun, or a verb, or what.</p>

</dd>
<dt id="Meaning">Meaning</dt>
<dd>

<p>By semantic context, you can tell that this ideogram &quot;X&quot; means &quot;shoe&quot; (pronounced one way) and not &quot;time&quot; (pronounced another), and that&#39;s how you know to transliterate it one way instead of the other.</p>

</dd>
<dt id="Origin-of-the-word"><a id="Origin"></a>Origin of the word</dt>
<dd>

<p>&quot;X&quot; means one thing in loanwords and/or placenames (and derivatives thereof), and another in native words.</p>

</dd>
<dt id="&quot;It&#39;s-just-that-way&quot;"><a id="It-s-just-that-way"></a>&quot;It&#39;s just that way&quot;</dt>
<dd>

<p>&quot;X&quot; normally makes the /X/ sound, except for this list of seventy exceptions (and words based on them, sometimes indirectly). Or: you never can tell which of the three ways to pronounce &quot;X&quot; this word actually uses; you just have to know which it is, so keep a dictionary on hand!</p>

</dd>
<dt id="Language">Language</dt>
<dd>

<p>The character &quot;X&quot; is actually used in several different languages, and you have to figure out which you&#39;re looking at before you can determine how to transliterate it.</p>

</dd>
</dl>

<p>Out of a desire to avoid being mired in <i>any</i> of these kinds of contextual factors, I chose to exclude <i>all of them</i> and just stick with context-insensitive replacement.</p>

<h1 id="A-POD-ENCODING-TEST"><a id="A"></a>A POD ENCODING TEST</h1>

<ul>

<li><p>&quot;Bront&euml;&quot; is six characters that should look like &quot;Bronte&quot;, but with double-dots on the &quot;e&quot; character.</p>

</li>
<li><p>&quot;R&eacute;sum&eacute;&quot; is six characters that should look like &quot;Resume&quot;, but with /-shaped accents on the &quot;e&quot; characters.</p>

</li>
<li><p>&quot;l&aelig;ti&quot; should be <i>four</i> letters long-- the second letter should not be two letters &quot;ae&quot;, but should be a single letter that looks like an &quot;a&quot; entirely fused with an &quot;e&quot;.</p>

</li>
<li><p>&quot;&chi;&rho;&omicron;&nu;&omicron;&sigmaf;&quot; is six Greek characters that should look kind of like: xpovoc</p>

</li>
<li><p>&quot;&#x41A;&#x410;&#x41A; &#x412;&#x410;&#x421; &#x417;&#x41E;&#x412;&#x423;&#x422;&quot; is three short Russian words that should look a lot like: KAK BAC 3OBYT</p>

</li>
<li><p>&quot;&#xD1F;&#xD27;&quot; is two Malayalam characters that should look like: sw</p>

</li>
<li><p>&quot;&#x4E2B;&#x4E8C;&#x5341;&#x4E00;&quot; is four Chinese characters that should look like: <code>Y=+-</code></p>

</li>
<li><p>&quot;&#xFF28;&#xFF45;&#xFF4C;&#xFF4C;&#xFF4F;&quot; is five characters that should look like: Hello</p>

</li>
</ul>

<p>If all of those come out right, your Pod viewing setup is working fine-- welcome to the 2010s! If those are full of garbage characters, consider viewing this page as HTML at <a href="./Text::Unidecode.html">https://metacpan.org/pod/Text::Unidecode</a> or <a href="http://search.cpan.org/perldoc?Text::Unidecode">http://search.cpan.org/perldoc?Text::Unidecode</a></p>

<p>If things look mostly okay, but the Malayalam and/or the Chinese are just question-marks or empty boxes, it&#39;s probably just that your computer lacks the fonts for those.</p>

<h1 id="TODO">TODO</h1>

<p>Lots:</p>

<p>* Rebuild the Unihan database. (Talk about hitting a moving target!)</p>

<p>* Add tone-numbers for Mandarin hanzi? Namely: In Unihan, when tone marks are present (like in &quot;kMandarin: d&agrave;o&quot;, should I continue to transliterate as just &quot;Dao&quot;, or should I put in the tone number: &quot;Dao4&quot;? It would be pretty jarring to have digits appear where previously there was just alphabetic stuff-- But tone numbers make Chinese more readable. (I have a clever idea about doing this, for Unidecode v2 or v3.)</p>

<p>* Start dealing with characters over U+FFFF. Cuneiform! Emojis! Whatever!</p>

<p>* Fill in all the little characters that have crept into the Misc Symbols Etc blocks.</p>

<p>* More things that need tending to are detailed in the TODO.txt file, included in this distribution. Normal installs probably don&#39;t leave the TODO.txt lying around, but if nothing else, you can see it at <a href="http://search.cpan.org/search?dist=Text::Unidecode">http://search.cpan.org/search?dist=Text::Unidecode</a></p>

<h1 id="MOTTO">MOTTO</h1>

<p>The Text::Unidecode motto is:</p>

<pre><code>  It&#39;s better than nothing!</code></pre>

<p>...in <i>both</i> meanings: 1) seeing the output of <code>unidecode(...)</code> is better than just having all font-unavailable Unicode characters replaced with &quot;?&quot;&#39;s, or rendered as gibberish; and 2) it&#39;s the worst, i.e., there&#39;s nothing that Text::Unidecode&#39;s algorithm is better than. All sensible transliteration algorithms (like for German, see below) are going to be smarter than Unidecode&#39;s.</p>

<h1 id="WHEN-YOU-DON&#39;T-LIKE-WHAT-UNIDECODE-DOES"><a id="WHEN"></a><a id="WHEN-YOU-DON-T-LIKE-WHAT-UNIDECODE-DOES"></a>WHEN YOU DON&#39;T LIKE WHAT UNIDECODE DOES</h1>

<p>I will repeat the above, because some people miss it:</p>

<p>Text::Unidecode is meant to be a transliterator of <i>last resort,</i> to be used once you&#39;ve decided that you can&#39;t just display the Unicode data as is, <i>and once you&#39;ve decided you don&#39;t have a more clever, language-specific transliterator available</i>-- or once you&#39;ve <i>already applied</i> a smarter algorithm and now just want Unidecode to do cleanup.</p>

<p>In other words, when you don&#39;t like what Unidecode does, <i>do it yourself.</i> Really, that&#39;s what the above says. Here&#39;s how you would do this for German, for example:</p>

<p>In German, there&#39;s the typographical convention that an umlaut (the double-dots on: &auml; &ouml; &uuml;) can be written as an &quot;-e&quot;, like with &quot;Sch&ouml;n&quot; becoming &quot;Schoen&quot;. But Unidecode doesn&#39;t do that-- I have Unidecode simply drop the umlaut accent and give back &quot;Schon&quot;.</p>

<p>(I chose this not because I&#39;m a big meanie, but because <i>generally</i> changing &quot;&uuml;&quot; to &quot;ue&quot; is disastrous for all text that&#39;s <i>not in German</i>. Finnish &quot;Hyv&auml;&auml; p&auml;iv&auml;&auml;&quot; would turn into &quot;Hyvaeae paeivaeae&quot;. And I discourage you from being <i>yet another</i> German who emails me, trying to impel me to consider a typographical nicety of German to be more important than <i>all other languages</i>.)</p>

<p>If you know that the text you&#39;re handling is probably in German, and you want to apply the &quot;umlaut becomes -e&quot; rule, here&#39;s how to do it for yourself (and then use Unidecode as <i>the fallback</i> afterwards):</p>

<pre><code>  use utf8;  # &lt;-- probably necessary.

  our( %German_Characters ) = qw(
   &Auml; AE   &auml; ae
   &Ouml; OE   &ouml; oe
   &Uuml; UE   &uuml; ue
   &szlig; ss 
  );
  
  use Text::Unidecode qw(unidecode);
  
  sub german_to_ascii {
    my($german_text) = @_;
    
    $german_text =~
      s/([&Auml;&auml;&Ouml;&ouml;&Uuml;&uuml;&szlig;])/$German_Characters{$1}/g;
    
    # And now, as a *fallthrough*:
    $german_text = unidecode( $german_text );
    return $german_text;
  }</code></pre>

<p>To pick another example, here&#39;s something that&#39;s not about a specific language, but simply having a preference that may or may not agree with Unidecode&#39;s (i.e., mine). Consider the &quot;&yen;&quot; symbol. Unidecode changes that to &quot;Y=&quot;. If you want &quot;&yen;&quot; as &quot;YEN&quot;, then...</p>

<pre><code>  use Text::Unidecode qw(unidecode);

  sub my_favorite_unidecode {
    my($text) = @_;
    
    $text =~ s/&yen;/YEN/g;
    
    # ...and anything else you like, such as:
    $text =~ s/&euro;/Euro/g;
    
    # And then, as a fallback,...
    $text = unidecode($text);
     
    return $text;    
  }</code></pre>

<p>Then if you do:</p>

<pre><code>  print my_favorite_unidecode(&quot;You just won &yen;250,000 and &euro;40,000!!!&quot;);</code></pre>

<p>...you&#39;ll get:</p>

<pre><code>  You just won YEN250,000 and Euro40,000!!!</code></pre>

<p>...just as you like it.</p>

<p>(By the way, the reason <i>I</i> don&#39;t have Unidecode just turn &quot;&yen;&quot; into &quot;YEN&quot; is that the same symbol also stands for yuan, the Chinese currency. A &quot;Y=&quot; is nicely, <i>safely</i> neutral as to whether we&#39;re talking about yen or yuan-- Japan, or China.)</p>

<p>Another example: for hanzi/kanji/hanja, I have designed Unidecode to transliterate according to the value that that character has in Mandarin (otherwise Cantonese,...). Some users have complained that applying Unidecode to Japanese produces gibberish.</p>

<p>To make a long story short: transliterating from Japanese is <i>difficult</i> and it requires a <i>lot</i> of context-sensitivity. If you have text that you&#39;re fairly sure is in Japanese, you&#39;re going to have to use a Japanese-specific algorithm to transliterate Japanese into ASCII. (And then you can call Unidecode on the output from that-- it is useful for, for example, turning &#xFF46;&#xFF55;&#xFF4C;&#xFF4C;&#xFF57;&#xFF49;&#xFF44;&#xFF54;&#xFF48; characters into their normal (ASCII) forms.</p>

<p>(Note, as of August 2016: I have titanic but tentative plans for making the value of Unihan characters be something you could set parameters for at runtime, in changing the order of &quot;Mandarin else Cantonese else...&quot; in the value retrieval. Currently that preference list is hardwired on my end, at module-build time. Other options I&#39;m considering allowing for: whether the Mandarin and Cantonese values should have the tone numbers on them; whether every Unihan value should have a terminal space; and maybe other clever stuff I haven&#39;t thought of yet.)</p>

<h1 id="CAVEATS">CAVEATS</h1>

<p>If you get really implausible nonsense out of <code>unidecode(...)</code>, make sure that the input data really is a utf8 string. See <a href="https://metacpan.org/pod/perlunicode">perlunicode</a> and <a href="https://metacpan.org/pod/perlunitut">perlunitut</a>.</p>

<p><i>Unidecode will work disastrously bad on Japanese.</i> That&#39;s because Japanese is very very hard. To extend the Unidecode motto, Unidecode is better than nothing, and with Japanese, <i>just barely!</i></p>

<p>On pure Mandarin, Unidecode will frequently give odd values-- that&#39;s because a single hanzi can have several readings, and Unidecode only knows what the Unihan database says is the most common one.</p>

<h1 id="THANKS">THANKS</h1>

<p>Thanks to (in only the sloppiest of sorta-chronological order): Jordan Lachler, Harald Tveit Alvestrand, Melissa Axelrod, Abhijit Menon-Sen, Mark-Jason Dominus, Joe Johnston, Conrad Heiney, fileformat.info, Philip Newton, &#x5510;&#x9CF3;, Toma&#x17E; &Scaron;olc, Mike Doherty, JT Smith and the MadMongers, Arden Ogg, Craig Copris, David Cusimano, Brendan Byrd, Hex Martin, and <i>many</i> other pals who have helped with the ideas or values for Unidecode&#39;s transliterations, or whose help has been in the secret F5 tornado that constitutes the internals of Unidecode&#39;s implementation.</p>

<p>And thank you to the many people who have encouraged me to plug away at this project. A decade went by before I had any idea that more than about 4 or 5 people were using or getting any value out of Unidecode. I am told that actually my figure was missing some zeroes on the end!</p>

<h1 id="PORTS">PORTS</h1>

<p>Some wonderful people have ported Unidecode to other languages!</p>

<ul>

<li><p>Python: <a href="https://pypi.python.org/pypi/Unidecode">https://pypi.python.org/pypi/Unidecode</a></p>

</li>
<li><p>PHP: <a href="https://github.com/silverstripe-labs/silverstripe-unidecode">https://github.com/silverstripe-labs/silverstripe-unidecode</a></p>

</li>
<li><p>Ruby: <a href="http://www.rubydoc.info/gems/unidecode/1.0.0/frames">http://www.rubydoc.info/gems/unidecode/1.0.0/frames</a></p>

</li>
<li><p>JavaScript: <a href="https://www.npmjs.org/package/unidecode">https://www.npmjs.org/package/unidecode</a></p>

</li>
<li><p>Java: <a href="https://github.com/xuender/unidecode">https://github.com/xuender/unidecode</a></p>

</li>
</ul>

<p>I can&#39;t vouch for the details of each port, but these are clever people, so I&#39;m sure they did a fine job.</p>

<h1 id="SEE-ALSO"><a id="SEE"></a>SEE ALSO</h1>

<p>An article I wrote for <i>The Perl Journal</i> about Unidecode: <a href="http://interglacial.com/tpj/22/">http://interglacial.com/tpj/22/</a> (<b>READ IT!</b>)</p>

<p>Jukka Korpela&#39;s <a href="http://www.cs.tut.fi/~jkorpela/fui.html8">http://www.cs.tut.fi/~jkorpela/fui.html8</a> which is brilliantly useful, and its code is brilliant (so, view source!). I was <i>kinda</i> thinking about maybe doing something <i>sort of</i> like that for the v2.x versions of Unicode-- but now he&#39;s got me convinced that I should go right ahead.</p>

<p>Tom Christiansen&#39;s <i>Perl Unicode Cookbook</i>, <a href="http://www.perl.com/pub/2012/04/perlunicook-standard-preamble.html">http://www.perl.com/pub/2012/04/perlunicook-standard-preamble.html</a></p>

<p>Unicode Consortium: <a href="http://www.unicode.org/">http://www.unicode.org/</a></p>

<p>Searchable Unihan database: <a href="http://www.unicode.org/cgi-bin/GetUnihanData.pl">http://www.unicode.org/cgi-bin/GetUnihanData.pl</a></p>

<p>Geoffrey Sampson. 1990. <i>Writing Systems: A Linguistic Introduction.</i> ISBN: 0804717567</p>

<p>Randall K. Barry (editor). 1997. <i>ALA-LC Romanization Tables: Transliteration Schemes for Non-Roman Scripts.</i> ISBN: 0844409405 [ALA is the American Library Association; LC is the Library of Congress.]</p>

<p>Rupert Snell. 2000. <i>Beginner&#39;s Hindi Script (Teach Yourself Books).</i> ISBN: 0658009109</p>

<h1 id="LICENSE">LICENSE</h1>

<p>Copyright (c) 2001, 2014, 2015, 2016 Sean M. Burke.</p>

<p>Unidecode is distributed under the Perl Artistic License ( <a href="https://metacpan.org/pod/perlartistic">perlartistic</a> ), namely:</p>

<p>This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.</p>

<p>This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.</p>

<h1 id="DISCLAIMER">DISCLAIMER</h1>

<p>Much of Text::Unidecode&#39;s internal data is based on data from The Unicode Consortium, with which I am unaffiliated. A good deal of the internal data comes from suggestions that have been contributed by people other than myself.</p>

<p>The views and conclusions contained in my software and documentation are my own-- they should not be interpreted as representing official policies, either expressed or implied, of The Unicode Consortium; nor should they be interpreted as necessarily the views or conclusions of people who have contributed to this project.</p>

<p>Moreover, I discourage you from inferring that choices that I&#39;ve made in Unidecode reflect political or linguistic prejudices on my part. Just because Unidecode doesn&#39;t do great on your language, or just because it might seem to do better on some another language, please don&#39;t think I&#39;m out to get you!</p>

<h1 id="AUTHOR">AUTHOR</h1>

<p>Your pal, Sean M. Burke <code>sburke@cpan.org</code></p>

<h1 id="O-HAI!"><a id="O"></a><a id="O-HAI"></a>O HAI!</h1>

<p>If you&#39;re using Unidecode for anything interesting, be cool and email me, I&#39;m always curious what people use this for. (The answers so far have surprised me!)</p></div>

<div id="metacpan_install-instructions-dialog" class="modal fade">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title">Module Install Instructions</h4>
      </div>
      <div class="modal-body">
        <p>To install Text::Unidecode, copy and paste the appropriate command in to your terminal.</p>
        <p><a href="https://metacpan.org/dist/App-cpanminus/view/bin/cpanm">cpanm</a></p>
        <pre><code>cpanm Text::Unidecode</code></pre>
        <p><a href="https://metacpan.org/pod/CPAN">CPAN shell</a></p>
        <pre><code>perl -MCPAN -e shell
install Text::Unidecode</code></pre>
        <p>For more information on module installation, please visit <a href="https://www.cpan.org/modules/INSTALL.html">the detailed CPAN module installation guide</a>.</p>
      </div>
      <div class="modal-footer">
        <a href="./Text::Unidecode.html#" data-dismiss="modal" class="btn">Close</a>
      </div>
    </div>
  </div>
</div>
          </main>
          <div class="content-pagination">
          </div>
        </div>
        <footer class="footer">
          <div class="footer-container">
            <div class="footer-social">
              <div class="footer-link footer-logo">
                <a href="https://metacpan.org/">
                  <img src="https://metacpan.org/static/images/metacpan-logo.svg" alt="MetaCPAN" />
                </a>
              </div>
              <a class="footer-social-link" href="https://github.com/metacpan">
                <i class="fab fa-github-square"></i>
              </a>
              <a class="footer-social-link" href="https://fosstodon.org/@metacpan">
                <i class="fab fa-mastodon"></i>
              </a>
            </div>
            <div class="footer-links">
              <div class="footer-link">
                  <a href="https://metacpan.org/about">About</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/about/sponsors">Sponsor</a>
              </div>
              <div class="footer-link">
                  <a href="https://grep.metacpan.org">grep::cpan</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/recent">Recent</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/about/faq">FAQ</a>
              </div>
              <div class="footer-link">
                  <a href="https://metacpan.org/tools">Tools</a>
              </div>
              <div class="footer-link">
                  <a href="https://fastapi.metacpan.org/">API</a>
              </div>
              <div class="footer-link">
                  <a href="https://www.perl.org/">Perl.org</a>
              </div>
            </div>
            <div class="footer-sponsors">
              <a class="footer-sponsor-link" target="_blank" href="https://www.bytemark.co.uk/" rel="noopener">
                <img class="footer-sponsor-bytemark" src="https://metacpan.org/static/images/sponsors/bytemark_logo.svg" alt="Bytemark logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://www.liquidweb.com/" rel="noopener">
                <img class="footer-sponsor-liquidweb" src="https://metacpan.org/static/images/sponsors/liquidweb_logo.png" alt="liquidweb logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://deriv.com/careers/" rel="noopener">
                <img class="footer-sponsor-deriv" src="https://metacpan.org/static/images/sponsors/deriv.svg" alt="Deriv logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://geocode.xyz" rel="noopener">
                <img class="footer-sponsor-geocode" src="https://metacpan.org/static/images/sponsors/geocodelogo.svg" alt="Geocode logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://www.fastly.com/" rel="noopener">
                <img class="footer-sponsor-fastly" src="https://metacpan.org/static/images/sponsors/fastly_logo.svg" alt="Fastly logo">
              </a>
              <a class="footer-sponsor-link" target="_blank" href="https://opencagedata.com" rel="noopener">
                <img class="footer-sponsor-opencage" src="https://metacpan.org/static/images/sponsors/open-cage.svg" alt="OpenCage logo">
              </a>
            </div>
          </div>
        </footer>
        <div class="modal fade" tabindex="-1" role="dialog" id="metacpan_keyboard-shortcuts">
          <div class="modal-dialog">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Keyboard Shortcuts</h4>
              </div>
              <div class="modal-body row">
<div class="col-md-6">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>Global</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>s</kbd>
        </td>
        <td>Focus search bar</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>?</kbd>
        </td>
        <td>Bring up this help dialog</td>
      </tr>
    </tbody>
  </table>

  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>GitHub</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>p</kbd>
        </td>
        <td>Go to pull requests</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>i</kbd>
        </td>
        <td>go to github issues (only if github is preferred repository)</td>
      </tr>
    </tbody>
  </table>
</div>

<div class="col-md-6">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>POD</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>a</kbd>
        </td>
        <td>Go to author</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>c</kbd>
        </td>
        <td>Go to changes</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>i</kbd>
        </td>
        <td>Go to issues</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>d</kbd>
        </td>
        <td>Go to dist</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>r</kbd>
        </td>
        <td>Go to repository/SCM</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>s</kbd>
        </td>
        <td>Go to source</td>
      </tr>
      <tr>
        <td class="keys">
          <kbd>g</kbd> <kbd>b</kbd>
        </td>
        <td>Go to file browse</td>
      </tr>

    </tbody>
  </table>
</div>

<div class="col-md-12">
  <table class="table keyboard-shortcuts">
    <thead>
      <tr>
        <th></th>
        <th>Search terms</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><em>module:</em> (e.g. <a href="https://metacpan.org/search?q=module%3APlugin">module:Plugin</a>)</td>
      </tr>
      <tr>
        <td><em>distribution:</em> (e.g. <a href="https://metacpan.org/search?q=distribution%3ADancer+auth">distribution:Dancer auth</a>)</td>
      </tr>
      <tr>
        <td><em>author:</em> (e.g. <a href="https://metacpan.org/search?q=author%3ASONGMU+Redis">author:SONGMU Redis</a>)</td>
      </tr>
      <tr>
        <td><em>version:</em> (e.g. <a href="https://metacpan.org/search?q=version%3A1.00">version:1.00</a>)</td>
      </tr>
    </tbody>
  </table>
</div>
              </div>
              <div class="modal-footer"></div>
            </div>
          </div>
        </div>
    </body>
</html>
